/**
 * @description: 二分查找
 * @param {*} arr 要搜索的数组
 * @param {*} num 在数组中查找的元素
 * @return {*}
 */
function binarySearch1(arr, num) {
  let l = 0, // 定义开始查找的左侧位
    r = arr.length - 1, // 定义开始查找的右侧位
    guess; // 左侧位和右侧位之和/2向下取整的位置
  // 循环的终止条件
  while (l <= r) {
    // guess 等于 l,r 中间的位置
    guess = Math.floor((l + r) / 2);
    if (arr[guess] === num) {
      return guess;
    } else if (arr[guess] > num) {
      r = guess - 1;
    } else {
      l = guess + 1;
    }
  }
  return -1;
}
function binarySearch(arr, search){
  let L = arr[0], R = arr[arr.length - 1], guess;
  // 满足 L<=R 进行循环，超出后跳出循环
  while(L<=R){
    guess = Math.floor((L+R)/2);
    if(arr[guess] === search){
      return guess;
    } else if(arr[guess] < search){
      L = guess+1
    } else {
      R = guess -1
    }
  }
  // 查找不到
  return -1;
}
// console.log(binarySearch([1, 3, 45, 67, 89, 100], 2));
exports.binarySearch = binarySearch;
